package com.example.clsj.web;

import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.example.clsj.dto.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @Author: cy
 * @Date: 2024/8/19
 */
@RestController
public class FileUploadController {

    @RequestMapping(value = "/upload/file", method = RequestMethod.POST)
    public Result uploadFile(@RequestParam("file") MultipartFile file, String info) throws IOException {
        Log log = LogFactory.get();

        log.info(info);

        try {
            // 日志记录
            log.info("开始处理文件上传请求");

            // 获取原始文件名
            String originalFileName = file.getOriginalFilename();
            if (StringUtils.isBlank(originalFileName)) {
                throw new IllegalArgumentException("文件名为空");
            }

            // 检查文件类型（示例：仅允许上传文本文件）
            String contentType = file.getContentType();
            if (!"text/plain".equals(contentType)) {
                throw new IllegalArgumentException("不支持的文件类型: " + contentType);
            }

            // 记录文件基本信息
            log.info("文件名称: {}", originalFileName);
            log.info("文件大小: {} bytes", file.getSize());
            log.info("文件类型: {}", contentType);

            // 返回简单的成功标识
            return Result.success();
        } catch (Exception e) {
            log.error("文件上传失败: ", e);
            throw e; // 可以根据实际需求决定是否抛出异常或者返回错误信息
        }
    }

}
